'''
Created on 14-07-2012

@author: z0nk
'''
import sqlite3

class Baza(object):
    '''
    classdocs
    '''
    def __init__(self):
        '''
        Constructor
        '''
        dbfile = "../db/mydb.db3"
        self.conn = sqlite3.connect(dbfile)
        self.cur = self.conn.cursor()
        
    def dbQuery(self, query):
        self.cur.execute(query);
        rows = self.cur.fetchall()
        return rows;
    
    def getAllItems(self):
        return self.dbQuery("select * from wszystko")
    
    def getZakonczone(self):
        return self.dbQuery(self,"select * from skonczone")
    
    def getTrwajace(self):
        return self.dbQuery(self,"select * from trwajace")
    
    def getPrzebite(self):
        return self.dbQuery(self,"select * from przebite")
    
    def getWygrane(self):
        return self.dbQuery(self,"select * from kupoine")
    
    def getPrzegrane(self):
        return self.dbQuery(self,"select * from niekupione_skonczone")
    
    def getPrzegrywajace(self):
        return self.dbQuery(self,"select * from niekupione_trwajace")
    
    def providerNazwaNaID(self, nazwa):
        rows = self.dbQuery('select ID_Dostawcy from dostawca where Nazwa = "' + nazwa + '"')
        if(len(rows) == 1 ):
            return rows[0][0]
        else:
            raise NameError("nieznaleziono przedmiotu!")
            return -1
    
    def addPrzedmiot(self,Nazwa,Url,IDDostawcy,MaxCena=None,Koniec=None, Strzal =None):
        self.cur.execute('select ID_Przedmiotu from przedmiot where Url = "' + Url + '"')
        rows = self.cur.fetchall()
        if(rows == None or rows == "" or len(rows) > 0):
            raise NameError("przedmiot juz jest!")
        else:
            self.cur.execute('insert into przedmiot ("Nazwa","Url","ID_Dostawcy","MaxCena","koniec","strzal") values(?,?,?,?,?,?)',(Nazwa,Url,IDDostawcy,MaxCena,Koniec,Strzal))
            self.conn.commit()
    
    def getPrzedmiotID(self, Url):
        self.cur.execute('select ID_Przedmiotu from przedmiot where Url = "' + Url + '"')
        rows = self.cur.fetchall()
        return rows[0][0]
        
    def updatePrzedmiotData(self,idprzedmiotu,name,value):
        self.cur.execute('update przedmiot set '+name+' = '+str(value)+' where ID_Przedmiotu= '+str(idprzedmiotu))
        self.conn.commit()
        
    def updatePrzedmiotMaxCena(self,idprzedmiotu,cena):
        self.updatePrzedmiotData(idprzedmiotu, name = "MaxCena", value = cena)
        
    def updatePrzedmiotStrzal(self,idprzedmiotu,data=None,secPrzedKoncem=None):
        if(data != None):
            self.updatePrzedmiotData(idprzedmiotu, name = "Strzal", value = data)
        elif(secPrzedKoncem != None):
            self.updatePrzedmiotData(idprzedmiotu, name = "Strzal", value = '(select datetime(koniec,\'-'+ str(secPrzedKoncem) +' seconds\') from przedmiot where ID_Przedmiotu= '+str(idprzedmiotu)+ ') ')
        
    def updatePrzedmiotAktCena(self,idprzedmiotu,cena):
        self.updatePrzedmiotData(idprzedmiotu, "AktCena", cena)
        
    